<!DOCTYPE html>
<html class="writer-html5" lang="zh" >
<head>
  <meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />

  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>Ch1-0 准备工作 &mdash; EasyVulkan</title>
      <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
      <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
      <link rel="stylesheet" href="_static/theme.css" type="text/css" />
  <!--[if lt IE 9]>
    <script src="_static/js/html5shiv.min.js"></script>
  <![endif]-->
  
        <script data-url_root="./" id="documentation_options" src="_static/documentation_options.js"></script>
        <script src="_static/jquery.js"></script>
        <script src="_static/underscore.js"></script>
        <script src="_static/_sphinx_javascript_frameworks_compat.js"></script>
        <script src="_static/doctools.js"></script>
    <script src="_static/js/theme.js"></script>
    <link rel="index" title="索引" href="genindex.html" />
    <link rel="search" title="搜索" href="search.html" />
    <link rel="next" title="Ch1-1 创建GLFW窗口" href="Ch1-1%20%E5%88%9B%E5%BB%BAGLFW%E7%AA%97%E5%8F%A3.html" />
    <link rel="prev" title="首页" href="index.html" /> 
</head>

<body class="wy-body-for-nav"> 
  <div class="wy-grid-for-nav">
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
            <a href="index.html" class="icon icon-home"> EasyVulkan
            <img src="_static/logo1.png" class="logo" alt="Logo"/>
          </a>
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="search.html" method="get">
    <input type="text" name="q" placeholder="在文档中搜索" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>
        </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
              <p class="caption" role="heading"><span class="caption-text">第一章 初始化</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Ch1-0 准备工作</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id1">下载所需的库</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#vulkan-sdk">下载并安装Vulkan SDK</a></li>
<li class="toctree-l3"><a class="reference internal" href="#glm">下载GLM</a></li>
<li class="toctree-l3"><a class="reference internal" href="#glfw">下载GLFW</a></li>
<li class="toctree-l3"><a class="reference internal" href="#stb-image-h">下载stb_image.h</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id2">配置项目</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="Ch1-1%20%E5%88%9B%E5%BB%BAGLFW%E7%AA%97%E5%8F%A3.html">Ch1-1 创建GLFW窗口</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch1-2%20%E5%88%9D%E5%A7%8B%E5%8C%96%E6%B5%81%E7%A8%8B.html">Ch1-2 初始化流程</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch1-3%20%E5%88%9B%E5%BB%BAVK%E5%AE%9E%E4%BE%8B%E4%B8%8E%E9%80%BB%E8%BE%91%E8%AE%BE%E5%A4%87.html">Ch1-3 创建VK实例与逻辑设备</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch1-4%20%E5%88%9B%E5%BB%BA%E4%BA%A4%E6%8D%A2%E9%93%BE.html">Ch1-4 创建交换链</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第二章 绘制一个三角形</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch2-0%20%E4%BB%A3%E7%A0%81%E6%95%B4%E7%90%86%E5%8F%8A%E4%B8%80%E4%BA%9B%E8%BE%85%E5%8A%A9%E7%B1%BB.html">Ch2-0 代码整理及一些辅助类</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch2-1%20Rendering%20Loop.html">Ch2-1 Rendering Loop</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch2-2%20%E5%88%9B%E5%BB%BA%E6%B8%B2%E6%9F%93%E9%80%9A%E9%81%93%E5%92%8C%E5%B8%A7%E7%BC%93%E5%86%B2.html">Ch2-2 创建渲染通道和帧缓冲</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch2-3%20%E5%88%9B%E5%BB%BA%E7%AE%A1%E7%BA%BF%E5%B9%B6%E7%BB%98%E5%88%B6%E4%B8%89%E8%A7%92%E5%BD%A2.html">Ch2-3 创建管线并绘制三角形</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第三章 纵观Vulkan</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch3-1%20%E5%90%8C%E6%AD%A5%E5%8E%9F%E8%AF%AD.html">Ch3-1 同步原语</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-2%20%E5%9B%BE%E5%83%8F%E4%B8%8E%E7%BC%93%E5%86%B2%E5%8C%BA.html">Ch3-2 图像与缓冲区</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-3%20%E7%AE%A1%E7%BA%BF%E5%B8%83%E5%B1%80%E5%92%8C%E7%AE%A1%E7%BA%BF.html">Ch3-3 管线布局和管线</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-4%20%E6%B8%B2%E6%9F%93%E9%80%9A%E9%81%93%E5%92%8C%E5%B8%A7%E7%BC%93%E5%86%B2.html">Ch3-4 渲染通道和帧缓冲</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-5%20%E5%91%BD%E4%BB%A4%E7%BC%93%E5%86%B2%E5%8C%BA.html">Ch3-5 命令缓冲区</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-6%20%E6%8F%8F%E8%BF%B0%E7%AC%A6.html">Ch3-6 描述符</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-7%20%E9%87%87%E6%A0%B7%E5%99%A8.html">Ch3-7 采样器</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch3-8%20%E6%9F%A5%E8%AF%A2.html">Ch3-8 查询</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第四章 着色器</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch4-1%20%E7%9D%80%E8%89%B2%E5%99%A8%E6%A8%A1%E7%BB%84.html">Ch4-1 着色器模组</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch4-2%20%E9%A1%B6%E7%82%B9%E7%9D%80%E8%89%B2%E5%99%A8.html">Ch4-2 顶点着色器</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch4-3%20%E7%89%87%E6%AE%B5%E7%9D%80%E8%89%B2%E5%99%A8.html">Ch4-3 片段着色器</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch4-4%20%E5%87%A0%E4%BD%95%E7%9D%80%E8%89%B2%E5%99%A8.html">Ch4-4 几何着色器</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第五章 封装常用对象</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch5-0%20VKBase%2B.h.html">Ch5-0 VKBase+.h</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch5-1%20%E5%90%84%E7%A7%8D%E7%BC%93%E5%86%B2%E5%8C%BA.html">Ch5-1 各种缓冲区</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch5-2%202D%E8%B4%B4%E5%9B%BE%E5%8F%8A%E7%94%9F%E6%88%90Mipmap.html">Ch5-2 2D贴图及生成Mipmap</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch5-3%202D%E8%B4%B4%E5%9B%BE%E6%95%B0%E7%BB%84.html">Ch5-3 2D贴图数组</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第六章 进阶Vulkan</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch6-0%20%E4%BD%BF%E7%94%A8%E6%96%B0%E7%89%88%E6%9C%AC%E7%89%B9%E6%80%A7.html">Ch6-0 使用新版本特性</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch6-1%20%E6%97%A0%E5%9B%BE%E5%83%8F%E5%B8%A7%E7%BC%93%E5%86%B2.html">Ch6-1 无图像帧缓冲</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch6-2%20%E5%8A%A8%E6%80%81%E6%B8%B2%E6%9F%93.html">Ch6-2 动态渲染</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第七章 基础示例</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch7-1%20%E5%88%9D%E8%AF%86%E9%A1%B6%E7%82%B9%E7%BC%93%E5%86%B2%E5%8C%BA.html">Ch7-1 初识顶点缓冲区</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch7-2%20%E5%88%9D%E8%AF%86%E7%B4%A2%E5%BC%95%E7%BC%93%E5%86%B2%E5%8C%BA.html">Ch7-2 初识索引缓冲区</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch7-3%20%E5%88%9D%E8%AF%86%E5%AE%9E%E4%BE%8B%E5%8C%96%E7%BB%98%E5%88%B6.html">Ch7-3 初识实例化绘制</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch7-4%20%E5%88%9D%E8%AF%86Push%20Constant.html">Ch7-4 初识Push Constant</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch7-5%20%E5%88%9D%E8%AF%86Uniform%E7%BC%93%E5%86%B2%E5%8C%BA.html">Ch7-5 初识Uniform缓冲区</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch7-6%20%E6%8B%B7%E8%B4%9D%E5%9B%BE%E5%83%8F%E5%88%B0%E5%B1%8F%E5%B9%95.html">Ch7-6 拷贝图像到屏幕</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch7-7%20%E4%BD%BF%E7%94%A8%E8%B4%B4%E5%9B%BE.html">Ch7-7 使用贴图</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">第八章 简单示例</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ch8-1%20%E7%A6%BB%E5%B1%8F%E6%B8%B2%E6%9F%93.html">Ch8-1 离屏渲染</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch8-2%20%E6%B7%B1%E5%BA%A6%E6%B5%8B%E8%AF%95%E5%92%8C%E6%B7%B1%E5%BA%A6%E5%8F%AF%E8%A7%86%E5%8C%96.html">Ch8-2 深度测试和深度可视化</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch8-3%20%E5%BB%B6%E8%BF%9F%E6%B8%B2%E6%9F%93.html">Ch8-3 延迟渲染</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch8-4%20%E9%A2%84%E4%B9%98Alpha.html">Ch8-4 预乘Alpha</a></li>
<li class="toctree-l1"><a class="reference internal" href="Ch8-5%20sRGB%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4%E4%B8%8E%E5%BC%80%E5%90%AFHDR.html">Ch8-5 sRGB色彩空间与开启HDR</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">附录</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="Ap1-1%20%E8%BF%90%E8%A1%8C%E6%9C%9F%E7%BC%96%E8%AF%91GLSL.html">Ap1-1 运行期编译GLSL</a></li>
</ul>

        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
          <a href="index.html">EasyVulkan</a>
      </nav>

      <div class="wy-nav-content">
        <div class="rst-content">
          <div role="navigation" aria-label="Page navigation">
  <ul class="wy-breadcrumbs">
      <li><a href="index.html" class="icon icon-home"></a> &raquo;</li>
      <li>Ch1-0 准备工作</li>
      <li class="wy-breadcrumbs-aside">
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
             
  <section id="ch1-0">
<h1>Ch1-0 准备工作<a class="headerlink" href="#ch1-0" title="Permalink to this heading"></a></h1>
<section id="id1">
<h2>下载所需的库<a class="headerlink" href="#id1" title="Permalink to this heading"></a></h2>
<table class="docutils align-default">
    <colgroup>
        <col style="width: 40%">
        <col style="width: 60%">
    </colgroup>
    <thead>
        <tr class="row-odd">
            <th class="head"><p>名称</p></th>
            <th class="head"><p>描述</p></th>
        </tr>
    </thead>
    <tbody>
        <tr class="row-even">
            <td><p>Vulkan SDK</p></td>
            <td></td>
        </tr>
        <tr class="row-odd">
            <td><p>GLM</p></td>
            <td><p>用于OpenGL的数学库，也适用于Vulkan</p></td>
        </tr>
        <tr class="row-even">
            <td><p>GLFW</p></td>
            <td><p>帮助你轻松创建窗口，获取键鼠输入</p></td>
        </tr>
        <tr class="row-odd">
            <td><p>stb_image.h</p></td>
            <td><p>用于读取贴图，支持bmp、tga、png、jpeg、hdr等常见格式</p></td>
        </tr>
    </tbody>
</table>
<p>
    后两项可用其他库替代（比如在Windows上不用GLFW，自行创建一个Windows窗口以及surface）。
</p>
<p>
    GLM也可以用其他数学库替代，如果你嫌它不够快的话。
    <br>
    但需注意，GLM同GLSL一样，默认使用列主矩阵，在矩阵乘以矢量时，采用后乘（矢量在乘号右侧），举例而言：
</p>
    <pre class="code">
<span class="type">float4</span> vertex(...);
<span class="type">mat4</span> local_to_object(...);
<span class="type">mat4</span> object_to_world(...);
<span class="type">mat4</span> view(...);
<span class="type">mat4</span> proj(...);
<span class="type">float4</span> transformedVertex = proj * view * object_to_world * local_to_object * vertex;</pre>
<p>
    而DirectXMath中使用行主矩阵，并且使用预乘（可以看出这更符合直觉）：
</p>
    <pre class="code">
<span class="type">XMVECTOR</span> transformedVertex =
    <span class="fn">XMVector4Transform</span>(
        <span class="fn">XMVector4Transform</span>(
            <span class="fn">XMVector4Transform</span>(
                <span class="fn">XMVector4Transform</span>(vertex, local_to_object), object_to_world), view), proj);</pre>
<p>
    此外不同数学库生成的投影矩阵，其对应的NDC坐标系也各不相同，在挑选数学库时需注意甄别。
</p><section id="vulkan-sdk">
<h3>下载并安装Vulkan SDK<a class="headerlink" href="#vulkan-sdk" title="Permalink to this heading"></a></h3>
<p>
    根据你的系统选择最新的SDK，然后建议Windows下安装到默认目录。
    <br>
    <a href="https://vulkan.lunarg.com/sdk/home">https://vulkan.lunarg.com/sdk/home</a>
</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>
    <strong>检查设备是否支持Vulkan</strong>
    <br>
    安装完Vulkan SDK后，你可以在<span class="path">VulkanSDK\版本号\Bin</span>或者<span class="path">VulkanSDK\版本号\Bin32</span>下找到一些exe文件。
    <br>
    运行其中的<span class="path">vkcube.exe</span>，若是成功运行，看到了一个正在旋转的正方体，说明你的显卡支持Vulkan。
    <br>
    另外，你可以通过<span class="path">vulkaninfoSDK.exe</span>来查看显卡的相关信息。
</p>
</div></section>
<section id="glm">
<h3>下载GLM<a class="headerlink" href="#glm" title="Permalink to this heading"></a></h3>
<p>
    务必是最新的。从OpenGL过来的程序员们，不要使用几年前的版本！
    <br>
    <a href="https://github.com/g-truc/glm/releases">https://github.com/g-truc/glm/releases</a>
</p></section>
<section id="glfw">
<h3>下载GLFW<a class="headerlink" href="#glfw" title="Permalink to this heading"></a></h3>
<p>
    根据你的系统选择相应的pre-compiled binaries：
    <br>
    <a href="https://www.glfw.org/download.html">https://www.glfw.org/download.html</a>
</p></section>
<section id="stb-image-h">
<h3>下载stb_image.h<a class="headerlink" href="#stb-image-h" title="Permalink to this heading"></a></h3>
<p>
    直接下载单个文件即可：
    <br>
    <a href="https://github.com/nothings/stb/blob/master/stb_image.h">https://github.com/nothings/stb/blob/master/stb_image.h</a>
</p></section>
</section>
<section id="id2">
<h2>配置项目<a class="headerlink" href="#id2" title="Permalink to this heading"></a></h2>
<p>
    下面以Win10上的VisualStudio 2019或2022为例。
    <br>
    若你使用的是其他的IDE或文本编辑器，或开发环境是其他操作系统，其中各种差异请各位自行解决（可以参考<a href="https://vulkan-tutorial.com/Development_environment">Vulkan Tutorial</a>）。
    <br>
    关于下文中32位的文件和目录，如果你没有在安装VulkanSDK时勾选这些文件，或不需要开发32位版本，请无视。
</p>
<img alt="_images/ch1-0-1.png" src="_images/ch1-0-1.png" class="align-right">
<p>
    1.打开VS2019或VS2022，创建一个空的C++解决方案。
</p>
<p>
    2.在解决方案目录下（或项目目录，那么后文中的SolutionDir相应地变成ProjectDir），按你的命名习惯创建个用于存放外部依赖项的文件夹，我打算叫它<span class="path">Dependency</span>
</p>
<blockquote>
    <ul>
        <li>
            <p>
                将<span class="path">stb_image.h</span>放在<span class="path">Dependency</span>下。
            </p>
        </li>
        <li>
            <p>
                将glm压缩包内的<span class="path">glm/glm</span>放在<span class="path">Dependency</span>下。
            </p>
        </li>
        <li>
            <p>
                在<span class="path">Dependency</span>中新建一个<span class="path">GLFW</span>文件夹，将glfw-版本号.bin.WIN64压缩包内<span class="path">glfw-版本号.bin.WIN64(或32)/include</span>文件夹解压到该文件夹中，新建文件夹叫<span class="path">lib_win64</span>和<span class="path">lib_win32</span>，并在压缩包内找到相应的lib文件夹，将内容解压到刚刚新建的相应文件夹中。
            </p>
        </li>
        <li>
            <p>
                在<span class="path">Dependency</span>中新建一个<span class="path">Vulkan</span>文件夹，并依次新建<span class="path">Include</span>、<span class="path">Lib</span>、<span class="path">Lib32</span>三个文件夹，从你VulkanSDK的安装目录下找到<span class="path">Include/vulkan</span>（如果你的SDK版本较新，可能还需要<span class="path">Include/vk_video</span>）、<span class="path">Lib/vulkan-1.lb</span>、<span class="path">Lib32/vulkan-1.lib</span>，分别复制到上述三个文件夹。
            </p>
        </li>
    </ul>
    <p>
        因为我尽量不想更改压缩包内原有的文件层级关系，所以出现了<span class="path">GLFW/include/GLFW</span>这样的路径。
        <br>
        最后看上去应该如右图所示。
    </p>
</blockquote>
<p>
    3.新建<span class="path">main.cpp</span>（为了让项目属性里出现C++选项）。
</p>
<p>
    4.在项目属性中做如下变更：
</p>
<blockquote>
    <p>
        [所有配置, 所有平台]
        <br>
        <span class="path">C/C++ → 常规 → 附加包含目录</span>
        <br>
        添加：
        <br>
        <span class="mcr">$(SolutionDir)Dependency;</span>
        <br>
        <span class="mcr">$(SolutionDir)Dependency\Vulkan\Include;</span>
        <br>
        <span class="mcr">$(SolutionDir)Dependency\glm;</span>
        <br>
        <span class="mcr">$(SolutionDir)Dependency\GLFW\include;</span>
    </p>
    <p>
        [所有配置, 所有平台]
        <br>
        <span class="path">C/C++ → 语言 → C++语言标准</span>
        <br>
        设置为：
        <br>
        预览 - 最新 C++ 工作草案中的功能 (/std:c++latest)
    </p>
    <p>
        [所有配置, Win32]
        <br>
        <span class="path">链接器 → 常规 → 附加库目录</span>
        <br>
        添加：
        <br>
        <span class="mcr">$(SolutionDir)Dependency\Vulkan\Lib32;</span>
        <br>
        <span class="mcr">$(SolutionDir)Dependency\GLFW\lib_win32;</span>
        <br>
        <span class="mcr">%(AdditionalLibraryDirectories)</span>
    </p>
    <p>
        [所有配置, Win64]
        <br>
        <span class="path">链接器 → 常规 → 附加库目录</span>
        <br>
        添加：
        <br>
        <span class="mcr">$(SolutionDir)Dependency\Vulkan\Lib;</span>
        <br>
        <span class="mcr">$(SolutionDir)Dependency\GLFW\lib_win64;</span>
        <br>
        <span class="mcr">%(AdditionalLibraryDirectories)</span>
    </p>
    <p>
        <span class="cmt">//以下非必要，但是建议</span>
        <br>
        [所有配置, 所有平台]
        <br>
        <span class="path">配置属性 → 常规 → 输出目录</span>
        <br>
        设置为：
        <br>
        <span class="mcr">$(SolutionDir)$(ProjectName)_$(Platform)\$(Configuration)\</span>
        <br>
        [所有配置, 所有平台]
        <br>
        <span class="path">配置属性 → 常规 → 中间目录</span>
        <br>
        设置为：
        <br>
        <span class="mcr">$(SolutionDir)bin\$(ProjectName)_$(Platform)\$(Configuration)\</span>
        <br>
        <span class="cmt">//带有"$(ProjectName)_"是考虑到可能有在一个解决方案下创建多个项目的必要</span>
    </p>
</blockquote>
<p>
    至此为止项目就配置完了。
</p></section>
</section>


           </div>
          </div>
          <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
        <a href="index.html" class="btn btn-neutral float-left" title="首页" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> 上一页</a>
        <a href="Ch1-1%20%E5%88%9B%E5%BB%BAGLFW%E7%AA%97%E5%8F%A3.html" class="btn btn-neutral float-right" title="Ch1-1 创建GLFW窗口" accesskey="n" rel="next">下一页 <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
    </div>

  <hr/>

  <div role="contentinfo">
    <p>&#169; 版权所有 2021-2025, 葉橙.</p>
  </div>

  利用 <a href="https://www.sphinx-doc.org/">Sphinx</a> 构建，使用了 
    <a href="https://github.com/readthedocs/sphinx_rtd_theme">主题</a>
    由 <a href="https://readthedocs.org">Read the Docs</a>开发.
   

</footer>
        </div>
      </div>
    </section>
  </div>
  <script>
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script> 

</body>
</html>